﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using AdminCondominio.Dominio;
using AdminCondominio.Negocio;

namespace AdminCondominio.Pruebas
{

    [TestFixture]
    public class TesAreaComunServices
    {
        private IApplicationContext Spring = null;
        [TestFixtureSetUp]
        public void InicializarPruebas()
        {
            //"assembly://assembly/namespace/capaPersistencia.xml",
            Spring = new XmlApplicationContext(
                "assembly://AdminCondominio/AdminCondominio/capaPersistencia.xml",
                "assembly://AdminCondominio/AdminCondominio/capaNegocio.xml"
                );
        }

        [Test]
        public void TestCrearAreaComun()
        {
            AreaComun _AreaComun = new AreaComun();
            _AreaComun.TipoAreaComun = new TipoAreaComun();
            _AreaComun.NuPersonas = 3;
            _AreaComun.Area = (decimal)15.00;
            _AreaComun.TipoAreaComun.CoTipoAreaComun = 13;
            _AreaComun.Ubicacion = "bbb";
            _AreaComun.Estado = "Activo";
            int filas = 0;
            AreaComunService AreaComunService = (AreaComunService)Spring.GetObject("AreaComunService");
            Assert.NotNull(AreaComunService);

            ///Assert.DoesNotThrow(delegate
            //{
                filas = AreaComunService.RegistrarAreaComun(_AreaComun);
            //});
            // Assert.NotNull(vivienda);
            // Assert.Greater(vivienda.CoVivienda, 0);
        }

        [Test]
        public void ListAreaComun()
        {
            AreaComun _AreaComun = new AreaComun();
            _AreaComun.TipoAreaComun = new TipoAreaComun();
            _AreaComun.TipoAreaComun.CoTipoAreaComun = 13;

            AreaComunService AreaComunService = (AreaComunService)Spring.GetObject("AreaComunService");
            Assert.NotNull(AreaComunService);

            List<AreaComun> _ListAreaComun = new List<AreaComun>();

            Assert.DoesNotThrow(delegate
            {
                _ListAreaComun = AreaComunService.ListarAreaComun();
            });

            Assert.NotNull(_ListAreaComun);
            Assert.GreaterOrEqual(_ListAreaComun.Count, 1);
        }

        [Test]
        public void DelAreaComun()
        {
            AreaComun _AreaComun = new AreaComun();
            _AreaComun.CoAreaComun = 21;
            AreaComunService AreaComunService = (AreaComunService)Spring.GetObject("AreaComunService");
            Assert.NotNull(AreaComunService);
            int filas = 0;
            Assert.DoesNotThrow(delegate
            {
                filas = AreaComunService.DelAreaComun(_AreaComun);
            });

            //Assert.NotNull(_AreaComun);
        }

        [Test]
        public void TestUpdate()
        {
            AreaComun _AreaComun = new AreaComun();
            _AreaComun.TipoAreaComun = new TipoAreaComun();
            _AreaComun.CoAreaComun = 21;
            _AreaComun.NuPersonas = 15;
            _AreaComun.Area = (decimal)15.00;
            _AreaComun.TipoAreaComun.CoTipoAreaComun = 9;
            _AreaComun.Ubicacion = "bbb";
            _AreaComun.Estado = "Activo";

            AreaComunService AreaComunService = (AreaComunService)Spring.GetObject("AreaComunService");
            Assert.NotNull(AreaComunService);
            
            int filas = 0;
            Assert.DoesNotThrow(delegate
            {
                filas = AreaComunService.UpdateAreaComun(_AreaComun);
            });

            //Implementar las validaciones
            Assert.AreEqual(filas, 1);
        }

    }
}